{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第二步：调整树的参数：max_depth & min_child_weight# 第二步：调整树的参数：max_depth & min_child_weight"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 49352 entries, 0 to 49351\n",
      "Columns: 228 entries, bathrooms to interest_level\n",
      "dtypes: float64(9), int64(219)\n",
      "memory usage: 85.8 MB\n"
     ]
    }
   ],
   "source": [
    "dpath = './data/'\n",
    "dtrain = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "dtrain.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = dtrain['interest_level']\n",
    "train = dtrain.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)\n",
    "\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一轮参数调整得到的n_estimators最优值（216），其余参数继续默认值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8], 'colsample_bytree': [0.6, 0.7, 0.8, 0.9]}\n"
     ]
    }
   ],
   "source": [
    "# max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "#max_depth = [6,7,8]\n",
    "#min_child_weight = [4,5,6]\n",
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test3_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "print(param_test3_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58797, std: 0.00470, params: {'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  mean: -0.58556, std: 0.00319, params: {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  mean: -0.58480, std: 0.00392, params: {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  mean: -0.58387, std: 0.00410, params: {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  mean: -0.58224, std: 0.00379, params: {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  mean: -0.58154, std: 0.00361, params: {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  mean: -0.58837, std: 0.00284, params: {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  mean: -0.58542, std: 0.00397, params: {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  mean: -0.58465, std: 0.00338, params: {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  mean: -0.58287, std: 0.00336, params: {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  mean: -0.58202, std: 0.00298, params: {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  mean: -0.58187, std: 0.00408, params: {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  mean: -0.58836, std: 0.00268, params: {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  mean: -0.58534, std: 0.00375, params: {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  mean: -0.58391, std: 0.00317, params: {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  mean: -0.58289, std: 0.00334, params: {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  mean: -0.58190, std: 0.00335, params: {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  mean: -0.58196, std: 0.00312, params: {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  mean: -0.58786, std: 0.00351, params: {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  mean: -0.58609, std: 0.00400, params: {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  mean: -0.58516, std: 0.00463, params: {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  mean: -0.58294, std: 0.00417, params: {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  mean: -0.58225, std: 0.00389, params: {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  mean: -0.58193, std: 0.00407, params: {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       " -0.5815368321744773)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb3_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=216,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3,\n",
    "        nthread=-1)\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test3_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold, return_train_score=True)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_, gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([158.77276158, 176.58537865, 190.65648537, 194.4655273 ,\n",
       "        193.29505038, 193.29609909, 175.62647648, 197.75246243,\n",
       "        212.88934765, 227.20817323, 241.48877954, 239.27674227,\n",
       "        202.01570659, 226.04663529, 238.6260098 , 242.70591283,\n",
       "        243.39553165, 245.46684394, 216.8621201 , 248.38740063,\n",
       "        265.46343999, 271.64489784, 260.88166699, 239.23546119]),\n",
       " 'mean_score_time': array([0.55287137, 0.54485016, 0.54505057, 0.55307207, 0.53642788,\n",
       "        0.53943582, 0.54284501, 0.54424839, 0.54505081, 0.54003716,\n",
       "        0.5366282 , 0.55828605, 0.5590879 , 0.5566812 , 0.54946237,\n",
       "        0.55888758, 0.56390109, 0.552671  , 0.56570578, 0.5572835 ,\n",
       "        0.56791134, 0.54966331, 0.5033392 , 0.44257836]),\n",
       " 'mean_test_score': array([-0.58796758, -0.58556495, -0.58479851, -0.58387433, -0.58223658,\n",
       "        -0.58153683, -0.58836694, -0.58542093, -0.5846463 , -0.58287274,\n",
       "        -0.5820216 , -0.5818747 , -0.58836046, -0.58534215, -0.58391192,\n",
       "        -0.58288876, -0.58190402, -0.58195992, -0.58785657, -0.5860885 ,\n",
       "        -0.5851576 , -0.58294246, -0.58225145, -0.58192796]),\n",
       " 'mean_train_score': array([-0.49119821, -0.48420375, -0.48102817, -0.47833128, -0.47675887,\n",
       "        -0.47749854, -0.4874503 , -0.48123905, -0.47765291, -0.47533337,\n",
       "        -0.4745931 , -0.4749859 , -0.48386553, -0.47747789, -0.4740032 ,\n",
       "        -0.4724193 , -0.47139851, -0.47271968, -0.4813948 , -0.47480054,\n",
       "        -0.47205948, -0.4697429 , -0.4703916 , -0.47088587]),\n",
       " 'param_colsample_bytree': masked_array(data=[0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.7, 0.7, 0.7, 0.7, 0.7,\n",
       "                    0.7, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.9, 0.9, 0.9, 0.9,\n",
       "                    0.9, 0.9],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_subsample': masked_array(data=[0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.4, 0.5, 0.6, 0.7,\n",
       "                    0.8, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.4, 0.5, 0.6,\n",
       "                    0.7, 0.8],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " 'rank_test_score': array([22, 19, 15, 12,  7,  1, 24, 18, 14,  9,  6,  2, 23, 17, 13, 10,  3,\n",
       "         5, 21, 20, 16, 11,  8,  4]),\n",
       " 'split0_test_score': array([-0.58071606, -0.58092468, -0.57920167, -0.57685716, -0.57577668,\n",
       "        -0.57552558, -0.5828473 , -0.5793421 , -0.57913306, -0.57654704,\n",
       "        -0.57729163, -0.57479522, -0.5841337 , -0.57983413, -0.57845752,\n",
       "        -0.57789705, -0.57732288, -0.57743142, -0.58151934, -0.57916167,\n",
       "        -0.57775571, -0.57548124, -0.57580249, -0.5749092 ]),\n",
       " 'split0_train_score': array([-0.49387486, -0.48577582, -0.48361358, -0.4790367 , -0.47857859,\n",
       "        -0.47824101, -0.48901147, -0.48381701, -0.47936058, -0.47747091,\n",
       "        -0.47535303, -0.47490605, -0.48513628, -0.47918471, -0.47468969,\n",
       "        -0.47254093, -0.47223189, -0.47419592, -0.48361257, -0.47565739,\n",
       "        -0.47330766, -0.47041626, -0.46980959, -0.47225522]),\n",
       " 'split1_test_score': array([-0.58449522, -0.58365402, -0.58175748, -0.58237697, -0.58073517,\n",
       "        -0.57970948, -0.58881323, -0.58226398, -0.58269235, -0.58270628,\n",
       "        -0.58071965, -0.58047619, -0.58704053, -0.58370327, -0.58344386,\n",
       "        -0.58196513, -0.57924602, -0.5801722 , -0.58659959, -0.58530071,\n",
       "        -0.5827999 , -0.58233242, -0.58080507, -0.58041746]),\n",
       " 'split1_train_score': array([-0.49057099, -0.48365988, -0.48069626, -0.47932502, -0.4765248 ,\n",
       "        -0.47698223, -0.48663854, -0.48044266, -0.47631695, -0.47450866,\n",
       "        -0.47393588, -0.4747703 , -0.48294545, -0.47734412, -0.47549841,\n",
       "        -0.47473904, -0.47226881, -0.47219497, -0.48077154, -0.47367613,\n",
       "        -0.47331081, -0.47257124, -0.47076418, -0.47099568]),\n",
       " 'split2_test_score': array([-0.590727  , -0.58572616, -0.58492451, -0.58457837, -0.58285462,\n",
       "        -0.58274539, -0.58923126, -0.58746828, -0.5855011 , -0.58380961,\n",
       "        -0.58235962, -0.58262814, -0.5890714 , -0.58431823, -0.58351495,\n",
       "        -0.58155531, -0.58214723, -0.58128667, -0.58971163, -0.58621504,\n",
       "        -0.58623335, -0.58316105, -0.58284563, -0.58264631]),\n",
       " 'split2_train_score': array([-0.49104234, -0.48288482, -0.47936277, -0.47781528, -0.47535388,\n",
       "        -0.4765204 , -0.48836711, -0.48061338, -0.47757812, -0.47470187,\n",
       "        -0.47410605, -0.47642683, -0.48295467, -0.47808255, -0.47422943,\n",
       "        -0.4714798 , -0.46930222, -0.47171268, -0.48146971, -0.47456933,\n",
       "        -0.47133616, -0.46843841, -0.46884173, -0.47025863]),\n",
       " 'split3_test_score': array([-0.59018566, -0.58715901, -0.58892614, -0.58695346, -0.58534547,\n",
       "        -0.58377784, -0.59019982, -0.58807815, -0.5875415 , -0.58585439,\n",
       "        -0.5834464 , -0.58516569, -0.58932773, -0.58826858, -0.58669437,\n",
       "        -0.58554496, -0.58406415, -0.58565023, -0.59066788, -0.5887255 ,\n",
       "        -0.58748263, -0.58678879, -0.58432927, -0.58559323]),\n",
       " 'split3_train_score': array([-0.49052296, -0.48534534, -0.48136667, -0.47702199, -0.47595189,\n",
       "        -0.47881992, -0.48585859, -0.48008818, -0.47690768, -0.47413586,\n",
       "        -0.474151  , -0.47438323, -0.48451636, -0.47690257, -0.47272403,\n",
       "        -0.47250307, -0.47196691, -0.47363505, -0.48007657, -0.47547695,\n",
       "        -0.47045699, -0.46996049, -0.47145375, -0.4704353 ]),\n",
       " 'split4_test_score': array([-0.59371573, -0.59036236, -0.58918408, -0.58860713, -0.58647226,\n",
       "        -0.5859272 , -0.59074382, -0.58995354, -0.5883646 , -0.58544717,\n",
       "        -0.58629198, -0.58630961, -0.59223011, -0.59058814, -0.58745   ,\n",
       "        -0.58748273, -0.58674128, -0.58526006, -0.5907853 , -0.59104109,\n",
       "        -0.59151836, -0.58695   , -0.58747639, -0.58607484]),\n",
       " 'split4_train_score': array([-0.4899799 , -0.48335287, -0.48010158, -0.47845742, -0.47738521,\n",
       "        -0.47692913, -0.48737578, -0.48123402, -0.47810125, -0.47584955,\n",
       "        -0.47541953, -0.4744431 , -0.48377489, -0.4758755 , -0.47287442,\n",
       "        -0.47083365, -0.47122273, -0.47185979, -0.48104359, -0.47462289,\n",
       "        -0.47188576, -0.46732807, -0.47108877, -0.47048455]),\n",
       " 'std_fit_time': array([ 3.68367699,  0.44596517,  0.28984363,  0.92587404,  1.25675232,\n",
       "         0.6583474 ,  0.90764424,  0.51836742,  1.63764795, 12.23124482,\n",
       "         3.04916497,  2.13644717,  0.19632997,  0.5605375 ,  4.34742922,\n",
       "         3.48718379,  4.44825622,  2.71013233,  0.49073467,  4.2827675 ,\n",
       "         1.34824818,  1.5777925 ,  3.19701827, 16.80263829]),\n",
       " 'std_score_time': array([0.02041704, 0.00362088, 0.00675875, 0.02834289, 0.00826833,\n",
       "        0.020053  , 0.00765181, 0.0068709 , 0.00735726, 0.01496084,\n",
       "        0.01893307, 0.0426072 , 0.01298969, 0.01419971, 0.00990561,\n",
       "        0.0073571 , 0.01594949, 0.02401738, 0.01552577, 0.00647937,\n",
       "        0.01478508, 0.0052062 , 0.02287326, 0.01317465]),\n",
       " 'std_test_score': array([0.00469498, 0.00318628, 0.00392066, 0.00409529, 0.00379399,\n",
       "        0.00361194, 0.00284332, 0.00396772, 0.00338088, 0.00335974,\n",
       "        0.00298145, 0.00407776, 0.00268405, 0.00374574, 0.00317448,\n",
       "        0.00333783, 0.00335179, 0.00311979, 0.0035118 , 0.00400242,\n",
       "        0.00463386, 0.00417001, 0.00388967, 0.00406673]),\n",
       " 'std_train_score': array([0.00138003, 0.00114316, 0.00145198, 0.00083445, 0.00112993,\n",
       "        0.00087691, 0.00113805, 0.00134135, 0.00104526, 0.00121231,\n",
       "        0.00065193, 0.00074659, 0.00086288, 0.00111314, 0.00106476,\n",
       "        0.00132665, 0.00111358, 0.00100459, 0.0011978 , 0.00071289,\n",
       "        0.0011176 , 0.00179072, 0.00094804, 0.00072728])}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch3_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.581537 using {'colsample_bytree': 0.6, 'subsample': 0.8}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x247c3f06208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "结果跟预制的相同，所以不需要对若分类器数调整"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
